package com.emip.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.emip.bean.AlarmConfigBean;
import com.emip.bean.ItemBean;
import com.emip.bean.SiteBean;
import com.emip.bean.SiteItemBean;
import com.emip.config.CommonOperation;
import com.emip.dao.SiteItemDAO;
import com.emip.service.SiteItemService;

@Service("siteItemService")
public class SiteItemServiceImpl implements SiteItemService {

	@Autowired
	SiteItemDAO siteItemDAO;
	
	public SiteItemBean addSiteItem(SiteBean site, ItemBean item,
			double eMaxValue, double eMinValue, double overMaxValue,
			double overMinValue, String standUnit, int scale, double maxRange,
			double minRange, float factor, AlarmConfigBean alarm, String remark) {
		// TODO Auto-generated method stub
		SiteItemBean newBean = new SiteItemBean();
		newBean.setSite(site);
		newBean.setItem(item);
		newBean.seteMaxValue(eMaxValue);
		newBean.seteMinValue(eMinValue);
		newBean.setOverMaxValue(overMaxValue);
		newBean.setOverMinValue(overMinValue);
		newBean.setStandUnit(standUnit);
		newBean.setScale(scale);
		newBean.setMaxRange(maxRange);
		newBean.setMinRange(minRange);
		newBean.setFactor(factor);
		newBean.setAlarm(alarm);
		newBean.setRemark(remark);
		//
		newBean.setDatafid("");
		newBean.setDataid("");
		//
		//查重，是否已经有相同的siteID, itemID的记录存在
		//若有重复记录，则返回null
		if (siteItemDAO.findExist(newBean)) {
			return null;
		}
		int newID = siteItemDAO.add(newBean);
		newBean.setId(newID);
		return newBean;
	}

	public Boolean deleteSiteItem(int id) {
		SiteItemBean delBean = siteItemDAO.findByID(id);
		siteItemDAO.remove(delBean);
		return true;
	}

	public List<SiteItemBean> getAll() {
		return siteItemDAO.getAll();
	}

	public SiteItemBean getSiteItemByID(int id) {
		return siteItemDAO.findByID(id);
	}

	public SiteItemBean updateSiteItem(int id, SiteBean site, ItemBean item,
			double eMaxValue, double eMinValue, double overMaxValue,
			double overMinValue, String standUnit, int scale, double maxRange,
			double minRange, float factor, AlarmConfigBean alarm, String remark) {
		SiteItemBean newBean = siteItemDAO.findByID(id);
		newBean.setSite(site);
		newBean.setItem(item);
		newBean.seteMaxValue(eMaxValue);
		newBean.seteMinValue(eMinValue);
		newBean.setOverMaxValue(overMaxValue);
		newBean.setOverMinValue(overMinValue);
		newBean.setStandUnit(standUnit);
		newBean.setScale(scale);
		newBean.setMaxRange(maxRange);
		newBean.setMinRange(minRange);
		newBean.setFactor(factor);
		newBean.setAlarm(alarm);
		newBean.setRemark(remark);
		//查重，是否已经有相同的siteID, itemID的记录存在
		//若有重复记录，则返回null
		if (siteItemDAO.findExist(newBean)) {
			return null;
		}
		siteItemDAO.update(newBean);
		return newBean;
	}

	public List<SiteItemBean> getSiteItemBySiteID(String siteID) {
		return siteItemDAO.getItemSitesBySiteID(siteID);
	}

	public SiteItemBean findSiteItem(String siteID, String itemID) {
		return siteItemDAO.findSiteItem(siteID, itemID);
	}
	
	public int addAllSiteItems(String siteID) {
		return siteItemDAO.addAllItems(siteID);	
	}

}
